﻿⎕SE.FontObj←'APL385 Unicode' 22
⎕PW←155
⎕SE.SALT.Explore 'C:\Conga\TestCertificates'
)load conga
)copy util DISP
)copy c:\conga\dws\congadev Demo
⍝ --- A Handmade, But Secure, Server ---
certpath←Samples.CertPath
certpath
srvcert←certpath,'server/server-cert.pem'
srvkey←certpath,'server/server-key.pem'
cltcert←certpath,'client/geoff-cert.pem'
cltkey←certpath,'client/geoff-key.pem'

DRC.Init ''
DRC.SetProp'.' 'RootCertDir'(certpath,'ca')
                        DRC.SecureServer 'STATS' 1234 srvcert srvkey 64 
DRC.SecureClient 'C1' 'localhost' 1234 cltcert cltkey 16
                        DISP (rc obj event data)←4↑DRC.Wait 'STATS'
                        DRC.GetProp obj 'PeerCert'
DISP DRC.Send 'C1.CMD1' (1 2 3 4 4)
                        DISP (rc obj event data)←4↑DRC.Wait 'STATS'
                        DRC.Respond obj (Demo.StatCalc data)
DISP DRC.Wait 'C1'
DRC.Close¨'C1' 'STATS'
⍝ --- A WebServer in 1 Function ---
)ed #.Samples.SecureCallback
WebServer.HttpsRun&'#.Samples.SecureCallback' 8080 'HTTPSRV'
⎕←(r cmd)←2↑##.DRC.SecureClient'' 'localhost' 8080 cltcert cltkey 16 'Text' 10000
certs←2⊃##.DRC.GetProp cmd'PeerCert'
1⊃certs ⍝ Certificate
1↓certs ⍝ "Signing Chain"
(rc hdrs certs data)←cltcert cltkey Samples.HTTPSGet'https://localhost:8080/foo?arg1=1 2 3&arg2=4 5 6'
rc
hdrs
certs
data

⎕USING←'System.Windows.Forms,System.Windows.Forms.dll' 'System.Drawing,System.Drawing.dll'
form←⎕NEW Form
wb←⎕NEW WebBrowser
form wb←⎕NEW¨Form WebBrowser
(wb form).Size←⎕NEW Size (400 300)
form.Controls.Add wb
wb.DocumentText←data
form.ShowDialog ⍬

Demo.StatCalc 1 2 3 4 4
)ed #.Demo.SecureCallback
DRC.Close 'HTTPSRV'
WebServer.HttpsRun&'#.Demo.SecureCallback' 8080 'HTTPSRV'
(rc hdrs certs data)←cltcert cltkey Samples.HTTPSGet'https://localhost:8080/statcalc?arg=1 2 3 4 4'
wb.DocumentText←data
form.ShowDialog ⍬

⎕USING←'System.Diagnostics,system.dll'
Process.Start⊂'https://localhost:8080/statcalc?arg=1 2 3 4 4'
)erase form wb
DRC.Close 'HTTPSRV'
)clear